spb/wp-spboucher-ai
Public
1import type { Metadata } from "next";2import Link from "next/link";3import { getLocale } from "@/lib/i18n/server";4import { href, t } from "@/lib/i18n";5import { authorsWithCounts } from "@/lib/papers/queries";6export const revalidate = 300;7export async function generateMetadata(): Promise<Metadata> { const d = t(await getLocale()); return { title: d.authors.title, description: d.authors.lead, alternates: { canonical: "/authors" } }; }8export default async function AuthorsPage() {9 const locale = await getLocale(); const d = t(locale); const rows = await authorsWithCounts();10 return (<div className="container py-10"><h1 className="text-3xl sm:text-4xl">{d.authors.title}</h1><p className="meta mt-2">{d.authors.lead}</p>11 <ul className="grid gap-4 sm:grid-cols-2 lg:grid-cols-3 mt-8">{rows.map((a) => <li key={a.slug} className="card p-5"><h2 className="text-xl"><Link href={href(locale, `/authors/${a.slug}`)} className="text-fg no-underline hover:underline">{a.display_name}</Link></h2>{(locale === "fr" ? a.affiliation_fr : a.affiliation_en) && <p className="text-sm text-fg-2 mt-1">{locale === "fr" ? a.affiliation_fr : a.affiliation_en}</p>}<p className="meta mt-2">{a.n} {a.n === 1 ? d.topics.paper : d.authors.papers}</p></li>)}</ul></div>);12}13